iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0

開啟遊戲測試

東西都設定好,我們就可以開啟遊戲進行測試了,在IntelliJ左邊,可以開啟Gradle
https://ithelp.ithome.com.tw/upload/images/20240901/201617973d6nIi7Iov.png
gradle中的fabric有一個RunClient選項,點兩下就可以開始跑遊戲了。
https://ithelp.ithome.com.tw/upload/images/20240901/20161797ICJMODc1bS.png
阿斯~熟悉的畫面

模組第一步:物品

殞鐵: 註冊新物品

我們先來做一個物品練練手,我們都知道Minecraft裡面有很多物品,基本上每個東西都有自己的物品型態,今天我們可以先從一個金屬錠開始。
首先我們先建立一個資料夾,我們叫他item
https://ithelp.ithome.com.tw/upload/images/20240901/20161797dkomKGcf3t.png
item資料夾中,我們建一個class叫Moditems
https://ithelp.ithome.com.tw/upload/images/20240901/20161797gTZw3REvM1.png
在這個Moditem中,我們需要一個registerItem方法

private static Item registerItem(String name,Item item){
        return Registry.register(Registries.ITEM, new Identifier(TheClassicofMountainsandOceans.MOD_ID, name), item);
    }

這個方法是用來註冊Minecraft物品的,我們使用Registry.register將物品註冊到Minecraft的物品註冊表,對著程式按中鍵,可以看到原始碼
https://ithelp.ithome.com.tw/upload/images/20240901/20161797taLJyGcaaW.png
Registries.ITEM代表我們現在在註冊的是一個物品,同樣中鍵可以看到ITEM在註冊表中的定義
https://ithelp.ithome.com.tw/upload/images/20240901/20161797eMZU9gx9gY.png
new Identifier(TheClassicofMountainsandOceans.MOD_ID, name)是指新建一個物品的唯一識別符,所以在()中我們帶入模組的ModID跟作為參數傳入的name,接下來item是一個Item類型的物件,管理物品的性質與屬性,這裡我們使用傳入的參數。

這個方法準備好之後我們就可以使用了

public static final Item Siderite = registerItem("siderite", new Item(new FabricItemSettings()));

我們創建一個Item類型的Siderite,Siderite是殞鐵的意思,RisterItem的第一個字串參數是物品名稱,請跟ModID一樣只使用小寫英文跟 _ ,後面我們需要一個Item類物件,我們使用new Item(new FabricItemSettings()),這代表我們新建了一個Item實例,而FabricItemSetting()可以進一步設定這個物品的屬性,不過這裏我們不需要任何設定。

殞鐵: 物品文字與外觀

現在我們已經在程式上有了一個物品,但是遊戲中我們接觸到的不只是程式中的內容,還需要再進一步包裝,現在我們在專案管理可以看到,有一個叫resources的資料夾https://ithelp.ithome.com.tw/upload/images/20240901/20161797HE8u4184QS.png
請在這個資料夾中找到asset/[你的ModID],在這裡我們需要三個資料夾,代表語言與顯示文字的lang資料夾、代表紋理的texture資料夾以及一個告訴Texture要怎麼運作的models資料夾。
https://ithelp.ithome.com.tw/upload/images/20240901/20161797G4ZYA0v3p9.png

首先第一個lang資料夾,請建立一個叫en_us的JSON檔(en_us.json),這是當遊戲中語言是美式英語時物品顯示的名稱。接著我們這樣寫

{
"item.como.siderite": "Siderite"
}

這代表我們這個名稱的物品類別是item,como是我的物品ID,而siderite是我的物品ID,後面的Siderate是我希望的物品的美式英語。

接下來我們在models資料夾中再建一個item資料夾,這個資料夾中建立一個siderite.json檔,裡面這樣寫

{
  "parent": "minecraft:item/generated",
  "textures": {
    "layer0": "como:item/siderite"
  }
}

"parent": "minecraft:item/generated代表我們使用Minecraft的預設2D模型,我們的Texture將會按照預設的渲染方式渲染。
"textures"代表我們的紋理,layer0是指物品的主紋理,minecraft物品可以有多層紋理,這跟遊戲中的附魔有關,"como:item/siderite"是我們的紋理應該要存放的位置,應該要位在resources/assets/como/texture/item/siderate,所以我們需要在texturey資料夾中建立一個item資料夾,然後將我們的紋理丟到這個資料夾。

紋理應該要怎麼做呢,有三個方法

第一個是將Minecraft的原版紋理做變化,透過改變顏色跟外觀來讓新的紋理看起來不一樣,我的殞鐵就是這個方法
第二個方法是在網路上找到現實中的物品圖片,在丟到像素化網站將圖片像素化,這樣圖片就看起來像是Minecraft風格了
第三種方法是透過繪畫工具來繪製2D跟3D的紋理與模型
第二種跟第三種方法之後會提到,我的殞鐵是使用了Minecraft中原有的金屬錠,透過改變顏色來讓紋理看起來不一樣,我們可以先去正常開啟遊戲的啟動器中開啟1.20.1的遊戲,然後在電腦中搜索AppData資料夾(可以在搜索欄中輸入%Appdata%),然後在.minecraft/versions/1.20.1 中找到1.20.1版本的Java壓縮檔,解壓縮這個檔案,我們可以找到texture資料夾,裡面就能找到所有原版內容的紋理了。
透過小畫家發揮創意,就已將檔案丟到resources/assets/como/texture/item中,記得檔名要跟你的物品名稱一樣
https://ithelp.ithome.com.tw/upload/images/20240901/20161797HSsPbErLhD.png

實作完成,進入遊戲

現在萬事俱備,我們可以進入遊戲確認物品有沒有被註冊成功了
https://ithelp.ithome.com.tw/upload/images/20240901/201617971Bdqf9jDkv.png
非常完美,這樣我們就完成我們的物品了


上一篇
Minecraft Fabric Mod 模組製作 DAY2
下一篇
Minecraft Fabric Mod 模組製作 DAY4
系列文
Minecraft JAVA Fabric 模組製作 : 成為真正的創世神30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言